define("ace/mode/pascal_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
    "use strict";
    var r = e("../lib/oop"), i = e("./text_highlight_rules").TextHighlightRules, s = function () {
        this.$rules = {
            start: [{
                caseInsensitive: !0,
                token: "keyword.control.pascal",
                regex: "\\b(?:(absolute|abstract|all|and|and_then|array|as|asm|attribute|begin|bindable|case|class|const|constructor|destructor|div|do|do|else|end|except|export|exports|external|far|file|finalization|finally|for|forward|goto|if|implementation|import|in|inherited|initialization|interface|interrupt|is|label|library|mod|module|name|near|nil|not|object|of|only|operator|or|or_else|otherwise|packed|pow|private|program|property|protected|public|published|qualified|record|repeat|resident|restricted|segment|set|shl|shr|then|to|try|type|unit|until|uses|value|var|view|virtual|while|with|xor))\\b"
            }, {
                caseInsensitive: !0,
                token: ["variable.pascal", "text", "storage.type.prototype.pascal", "entity.name.function.prototype.pascal"],
                regex: "\\b(function|procedure)(\\s+)(\\w+)(\\.\\w+)?(?=(?:\\(.*?\\))?;\\s*(?:attribute|forward|external))"
            }, {
                caseInsensitive: !0,
                token: ["variable.pascal", "text", "storage.type.function.pascal", "entity.name.function.pascal"],
                regex: "\\b(function|procedure)(\\s+)(\\w+)(\\.\\w+)?"
            }, {
                token: "constant.numeric.pascal",
                regex: "\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"
            }, {
                token: "punctuation.definition.comment.pascal",
                regex: "--.*$",
                push_: [{
                    token: "comment.line.double-dash.pascal.one",
                    regex: "$",
                    next: "pop"
                }, {defaultToken: "comment.line.double-dash.pascal.one"}]
            }, {
                token: "punctuation.definition.comment.pascal",
                regex: "//.*$",
                push_: [{
                    token: "comment.line.double-slash.pascal.two",
                    regex: "$",
                    next: "pop"
                }, {defaultToken: "comment.line.double-slash.pascal.two"}]
            }, {
                token: "punctuation.definition.comment.pascal",
                regex: "\\(\\*",
                push: [{
                    token: "punctuation.definition.comment.pascal",
                    regex: "\\*\\)",
                    next: "pop"
                }, {defaultToken: "comment.block.pascal.one"}]
            }, {
                token: "punctuation.definition.comment.pascal",
                regex: "\\{",
                push: [{
                    token: "punctuation.definition.comment.pascal",
                    regex: "\\}",
                    next: "pop"
                }, {defaultToken: "comment.block.pascal.two"}]
            }, {
                token: "punctuation.definition.string.begin.pascal",
                regex: '"',
                push: [{
                    token: "constant.character.escape.pascal",
                    regex: "\\\\."
                }, {
                    token: "punctuation.definition.string.end.pascal",
                    regex: '"',
                    next: "pop"
                }, {defaultToken: "string.quoted.double.pascal"}]
            }, {
                token: "punctuation.definition.string.begin.pascal",
                regex: "'",
                push: [{
                    token: "constant.character.escape.apostrophe.pascal",
                    regex: "''"
                }, {
                    token: "punctuation.definition.string.end.pascal",
                    regex: "'",
                    next: "pop"
                }, {defaultToken: "string.quoted.single.pascal"}]
            }, {token: "keyword.operator", regex: "[+\\-;,/*%]|:=|="}]
        }, this.normalizeRules()
    };
    r.inherits(s, i), t.PascalHighlightRules = s
}), define("ace/mode/folding/coffee", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode", "ace/range"], function (e, t, n) {
    "use strict";
    var r = e("../../lib/oop"), i = e("./fold_mode").FoldMode, s = e("../../range").Range, o = t.FoldMode = function () {
    };
    r.inherits(o, i), function () {
        this.getFoldWidgetRange = function (e, t, n) {
            var r = this.indentationBlock(e, n);
            if (r)return r;
            var i = /\S/, o = e.getLine(n), u = o.search(i);
            if (u == -1 || o[u] != "#")return;
            var a = o.length, f = e.getLength(), l = n, c = n;
            while (++n < f) {
                o = e.getLine(n);
                var h = o.search(i);
                if (h == -1)continue;
                if (o[h] != "#")break;
                c = n
            }
            if (c > l) {
                var p = e.getLine(c).length;
                return new s(l, a, c, p)
            }
        }, this.getFoldWidget = function (e, t, n) {
            var r = e.getLine(n), i = r.search(/\S/), s = e.getLine(n + 1), o = e.getLine(n - 1), u = o.search(/\S/), a = s.search(/\S/);
            if (i == -1)return e.foldWidgets[n - 1] = u != -1 && u < a ? "start" : "", "";
            if (u == -1) {
                if (i == a && r[i] == "#" && s[i] == "#")return e.foldWidgets[n - 1] = "", e.foldWidgets[n + 1] = "", "start"
            } else if (u == i && r[i] == "#" && o[i] == "#" && e.getLine(n - 2).search(/\S/) == -1)return e.foldWidgets[n - 1] = "start", e.foldWidgets[n + 1] = "", "";
            return u != -1 && u < i ? e.foldWidgets[n - 1] = "start" : e.foldWidgets[n - 1] = "", i < a ? "start" : ""
        }
    }.call(o.prototype)
}), define("ace/mode/pascal", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/pascal_highlight_rules", "ace/mode/folding/coffee"], function (e, t, n) {
    "use strict";
    var r = e("../lib/oop"), i = e("./text").Mode, s = e("./pascal_highlight_rules").PascalHighlightRules, o = e("./folding/coffee").FoldMode, u = function () {
        this.HighlightRules = s, this.foldingRules = new o
    };
    r.inherits(u, i), function () {
        this.lineCommentStart = ["--", "//"], this.blockComment = [{start: "(*", end: "*)"}, {
            start: "{",
            end: "}"
        }], this.$id = "ace/mode/pascal"
    }.call(u.prototype), t.Mode = u
})